package anno;

import java.lang.annotation.*;

/*
定义新的Annotation 类型使用 @interface 关键字
自定义注解自动继承了java.lang.annotation.Annotation接口
Annotation 的成员变量在 Annotation 定义中以无参数方法的形式来声明。其方法名和返回值定义了该成员的名字和类型。
我们称为配置参数。类型只能是八种基本数据类型、String类型、Class类型、enum类型、Annotation类型、 以上所有类型的数组。
可以在定义 Annotation 的成员变量时为其指定初始值, 指定成员变量的初始值可使用 default 关键字
如果只有一个参数成员，建议使用参数名为value
如果定义的注解含有配置参数，那么使用时必须指定参数值，除非它有默认值。格式是“参数名 = 参数值”，如果只有一个参数成员，且名称为value，  可以省略“value=”
没有成员定义成员变量的 Annotation 称为标记; 这种Annotation仅利用自身的存在与否来为我们提供信息
包含成员变量的 Annotation 称为元数据Annotation，因为他们可以接受更多的元数据
 */
@Retention(RetentionPolicy.RUNTIME)
//// 数组的配置参数如果设置了多个值, 需要添加{}
@Target({ElementType.FIELD, ElementType.METHOD})
@Documented
public @interface CustomAnno {

    // 定义配置参数需要添加()
    int value() default 6;

    String[] name() default "shujia";


}
